package com.hsj;

/**
 * 简单  工厂模式   （静态工厂方法模式）   属于  类创建模式
 * 根据不同参数  返回 不同实例， 简单工厂模式 专门定义一个类来负责创建其他类的实例，被创建的实例 通常有共同父类
 * jdk 的   DateFormat 使用的 就是简单工厂模式 ，根据传入参数不同 创建不同实例
 *
 *
 * 简单工厂，根据不同参数创建不同对象， 但是如果加入新类型的对象，就需要修改工厂创建对象的方法
 *  例如下面的代码 如果想加一个 type="C",  就需要修改 createProduct()方法的逻辑  违反开闭原则
 */
public class _02_SimpleFactory {
    public static Product createProduct(String type) {  //根据传入的不同类型 new不同的对象返回，
        if (type.equals("A"))
            return new ProductA();
        else
            return new ProductB();
    }
}

abstract class Product {
}

class ProductA extends Product {

}

class ProductB extends Product {

}




class test{

    public static void main(String[] args) {
        Product a = _02_SimpleFactory.createProduct("A");
    }
}


